Computing system vendors provide their users (e.g., customers, integrators, etc.) with libraries of application programming interfaces (APIs) that are used by the users to control and/or extend the capabilities of the computing system. A user might combine multiple API calls into a procedure or subroutine that can be run to accomplish some purpose and/or to reach some state on the computing system. For example, a sequence of API calls might be run to manage one or more resource entities (e.g., virtual machines (VMs), virtual disks (vDisks), etc.) of the computing system. In some cases, a first user might combine multiple API calls into what that first user believes is an appropriate procedure or subroutine to accomplish a particular purpose (e.g., create a particular VM to have certain attributes and/or to perform a certain set of tasks) or to reach a particular state on the computing system (e.g., to have an allocated and initialized vDisk), while a second user might combine a different set of API calls into what the second user believes is an appropriate procedure or subroutine to accomplish the same effects (e.g., create the same VM with the same certain attributes, tasks and resources). While the first user's procedure and the second user's procedure may both in fact accomplish the same effects, one way or another way is often more efficient or more reliable, or faster, or for other reasons is preferred.
Uses of multiple API calls to achieve what is believed to be an appropriate procedure or subroutine is not isolated to developers. Administrators and other non-developer users today are more and more frequently taking advantage of the flexibility of modern computing systems by customizing the configuration of their systems. This leads to an increasing number of different configuration procedures (e.g., combinations of API calls) that are developed and issued to perform the customized integrations. Moreover, the varied programming skills and/or styles of both developers and non-developer users alike can lead to sub-optimal procedures (e.g., procedures that perform slowly, procedures that are error inducing, procedures that are wasteful of resources, etc.).
With the ever-increasing complexity of modern computing systems, users cannot reasonably be expected to know, for example, the intricacies of the often-changing set of vendor-supplied APIs, the performance of the APIs under different conditions, the performance of the APIs in different permutations, and/or the behavior of the APIs (e.g., exemplified by intended or unintended behaviors) in user-managed system integrations.
Unfortunately, a computer system vendor with many users of varying programming skill levels and/or styles faces an undesired situation in which the computer system vendor needs to support numerous combinations of API calls. In this situation, the computer system vendor needs to develop a codebase that can accommodate (e.g., test, execute, document, etc.) all such combinations of API calls, including sub-optimal user-defined procedures. The codebase of the computer system vendor also needs to handle implementation of the user-developed procedures under varying system conditions. Vendors want to offer users a standardized, vendor-supported way to accomplish a particular purpose and/or to reach a particular state on a computing system without reliance on any particular procedure development skill level of their users.
Therefore, what is needed is a technique or techniques to improve over procedure development techniques and/or over other considered approaches that address configuring complex computing systems that are used by numerous users with varying skills.